﻿using OF.Lib.DataAccess.Entity;
using OF.Lib.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;

namespace OF.Lib.DataAccess.Core
{
    public interface ISqlBuilder
    {
        string BuildPagedQuerySql(SQL sqlCfg, QueryFilter filter);

        string BuildSO_InsertSql<T>(string dbName, object dataParameter, string excludeProperties = null) where T : class, new();
        string BuildSO_InsertSqlWithReturnPK<T>(string dbName, object dataParameter, string excludeProperties = null) where T : class, new();

        string BuildSO_Load(string dbName, string table, string strWhere);

        string BuildSO_GetList(int? top, string dbName, string table, string strWhere, string orderBy); 

        string BuildSO_Update(string dbName, string table, object dataParameter, string excludeProperties, string strWhere, ref dynamic paramObject);
        string BuildSO_Delete(string dbName, string table, string strWhere);
    }
}
